package com.qiusuo0226.core.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qiusuo0226.core.pojo.entity.DictionaryDO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 字典项 持久层
 * @author qiusuo
 * @date 2023/7/23 21:40
 */
@Mapper
@Repository
public interface DictionaryMapper extends BaseMapper<DictionaryDO> {

    /**
     * 批量增加
     * @param entitys
     * @return 增加行数
     */
    int insertBatch(@Param("params") List<DictionaryDO> entitys);

    /**
     * 字典组列表
     * @param page 分页参数
     * @param searchWord 查询参数
     * @return 分页结果
     */
    @MapKey("groupCode")
    IPage<Map<String, Object>> groupList(Page<DictionaryDO> page, @Param("query") String searchWord);

    /**
     * 字典组编辑
     * @param groupName 字典组名称
     * @param groupCode 字典组编码
     * @return 编辑影响行数
     */
    int editGroup(@Param("groupName") String groupName, @Param("groupCode") String groupCode);

    /**
     * 字典值编辑
     * @param iid 字典值唯一标识
     * @param dictionaryName 字典值名
     * @param dictionaryCode 字典值编码
     * @param sort 排序
     * @return 编辑影响行数
     */
    int edit(@Param("iid") String iid,
             @Param("dictionaryName") String dictionaryName,
             @Param("dictionaryCode") String dictionaryCode,
             @Param("sort") Integer sort);

    /**
     * 删除字典组
     * @param groupCode 字典组编码
     * @return 删除影响行数
     */
    int removeGroup(String groupCode);

    /**
     * 删除字典值
     * @param groupCode 字典组编码
     * @param dictionaryCodes 字典值编码数组
     * @return 删除影响行数
     */
    int remove(@Param("groupCode") String groupCode,@Param("dictionaryCodes") String[] dictionaryCodes);


}
